﻿/*
#include <iostream>
using std::cout;
using std::endl;

class Stack
{
public:
    void Init(Stack* ps);
private:
    int* _arr;
    int _top;
    int _size;

};

class Date
{
public:
    void Init(int year, int month, int day)
    {
        _year = year;
        _month = month;
        _day = day;
    }

    void Print(Date& date)
    {
        cout << date._year << date._month << date._day << endl;
    }

private:
    int _year;
    int _month;
    int _day;

};


int main()
{
    Date date;
    date.Init(2025,3,24);
    date.Print(date);
    return 0;
}


// C++升级struct升级成了类
// 1、类⾥⾯可以定义函数
// 2、struct名称就可以代表类型
// C++兼容C中struct的⽤法
typedef struct ListNodeC
{
    struct ListNodeC* next;
    int val;
}LTNode;
// 不再需要typedef，ListNodeCPP就可以代表类型
struct ListNodeCPP
{
    void Init(int x)
    {
        next = nullptr;
        val = x;
    }
    ListNodeCPP* next;
    int val;
};
*/
#include <iostream>
#include <stdlib.h>
using namespace std;

class Stack
{
public:
    //成员函数

    void Init(int n = 4);
private:
    // 成员变量
    int* array;
    size_t capacity;
    size_t top;
};

// 声明和定义分离，需要指定类域
void Stack::Init(int n)
{
    array = (int*)malloc(sizeof(int) * n);
    if (nullptr == array)
    {
        perror("malloc申请空间失败");
        return;
    }
    capacity = n;
    top = 0;
}
int main()
{
    Stack st;
    st.Init(8);
    return 0;
}